d1667dabbf06445dad2be6640a41e6f37ddda3ab,src/org/pentaho/di/job/entries/ftpput/JobEntryFTPPUT.java,JobEntryFTPPUT,execute,#Result#number#Repository#Job#,433
Before Change
if (activeConnection)
{
ftpclient.setConnectMode(FTPConnectMode.ACTIVE);
if (log.isDetailed()) log.logDetailed(toString(), "set active ftp connection mode");
}
else
{
ftpclient.setConnectMode(FTPConnectMode.PASV);
if (log.isDetailed()) log.logDetailed(toString(), "set passive ftp connection mode");
}
// Set the timeout
ftpclient.setTimeout(timeout);
if (log.isDetailed()) log.logDetailed(toString(), "set timeout to "+timeout);
ftpclient.setControlEncoding(controlEncoding);
if (log.isDetailed()) log.logDetailed(toString(), "set control encoding to "+controlEncoding);
// login to ftp host ...
ftpclient.connect();
ftpclient.login(realUsername, realPassword);
// Remove password from logging, you don't know where it ends up.
if (log.isDetailed()) log.logDetailed(toString(), "logged in with user "+realUsername);
// move to spool dir ...
if (!Const.isEmpty(realRemoteDirectoty))
{
ftpclient.chdir(realRemoteDirectoty);
if (log.isDetailed()) log.logDetailed(toString(), "Changed to directory ["+realRemoteDirectoty+"]");
}
// Get all the files in the local directory...
int x = 0;
// Joerg: ..that's for Java5
// ArrayList<String> myFileList = new ArrayList<String>();
ArrayList<String> myFileList = new ArrayList<String>();
File localFiles = new File(realLocalDirectory);
File[] children = localFiles.listFiles();
for (int i=0; i<children.length; i++) {
// Get filename of file or directory
if (!children[i].isDirectory()) {
// myFileList.add(children[i].getAbsolutePath());
myFileList.add(children[i].getName());
x = x+1;
}
} // end for
// Joerg: ..that's for Java5
// String[] filelist = myFileList.toArray(new String[myFileList.size()]);
String[] filelist = new String[myFileList.size()];
myFileList.toArray(filelist);
if (log.isDetailed()) log.logDetailed(toString(), "Found "+filelist.length+" files in the local directory");
Pattern pattern = null;
if (!Const.isEmpty(realWildcard))
{
pattern = Pattern.compile(realWildcard);
} // end if
// Get the files in the list and execute ftp.put() for each file
for (int i=0;i<filelist.length && !parentJob.isStopped();i++)
{
boolean getIt = true;
// First see if the file matches the regular expression!
if (pattern!=null)
{
Matcher matcher = pattern.matcher(filelist[i]);
getIt = matcher.matches();
}
if (getIt)
{
if (!ftpclient.exists(filelist[i]) || (ftpclient.exists(filelist[i]) && !onlyPuttingNewFiles))
{
if (log.isDebug()) log.logDebug(toString(), "putting file ["+filelist[i]+"] to directory ["+realRemoteDirectoty+"]");
String localFilename = realLocalDirectory+Const.FILE_SEPARATOR+filelist[i];
ftpclient.put(localFilename, filelist[i]);
filesput++;
// Delete the file if this is needed!
if (remove)
{
children[i].delete();
if (log.isDetailed()) log.logDetailed(toString(), "deleted local file ["+filelist[i]+"]");
}
}
}
}
result.setResult( true );
if (log.isDetailed()) log.logDebug(toString(), "We have put " + filesput);
}
catch(Exception e)
{
result.setNrErrors(1);
log.logError(toString(), "Error getting files from SFTP : "+e.getMessage());
log.logError(toString(), Const.getStackTracker(e));
} finally
{
After Change
if (log.isDetailed()) log.logDetailed(toString(), Messages.getString("JobFTPPUT.Log.SetTimeout",""+timeout));
ftpclient.setControlEncoding(controlEncoding);
if (log.isDetailed()) log.logDetailed(toString(), Messages.getString("JobFTPPUT.Log.SetEncoding",controlEncoding));
// login to ftp host ...
ftpclient.connect();
ftpclient.login(realUsername, realPassword);
// Remove password from logging, you don't know where it ends up.
if (log.isDetailed()) log.logDetailed(toString(), Messages.getString("JobFTPPUT.Log.Logged",realUsername));
// move to spool dir ...
if (!Const.isEmpty(realRemoteDirectory))
{
ftpclient.chdir(realRemoteDirectory);
if (log.isDetailed()) log.logDetailed(toString(), Messages.getString("JobFTPPUT.Log.ChangedDirectory",realRemoteDirectory));
}
// Get all the files in the local directory...
int x = 0;
// Joerg: ..that's for Java5
// ArrayList<String> myFileList = new ArrayList<String>();
ArrayList<String> myFileList = new ArrayList<String>();
File localFiles = new File(realLocalDirectory);
File[] children = localFiles.listFiles();
for (int i=0; i<children.length; i++) {
// Get filename of file or directory
if (!children[i].isDirectory()) {
// myFileList.add(children[i].getAbsolutePath());
myFileList.add(children[i].getName());
x = x+1;
}
} // end for
// Joerg: ..that's for Java5
// String[] filelist = myFileList.toArray(new String[myFileList.size()]);
String[] filelist = new String[myFileList.size()];
myFileList.toArray(filelist);
if (log.isDetailed()) log.logDetailed(toString(), Messages.getString("JobFTPPUT.Log.FoundFileLocalDirectory",""+filelist.length,realLocalDirectory));
Pattern pattern = null;
if (!Const.isEmpty(realWildcard))
{
pattern = Pattern.compile(realWildcard);
} // end if
// Get the files in the list and execute ftp.put() for each file
for (int i=0;i<filelist.length && !parentJob.isStopped();i++)
{
boolean getIt = true;
// First see if the file matches the regular expression!
if (pattern!=null)
{
Matcher matcher = pattern.matcher(filelist[i]);
getIt = matcher.matches();
}
if (getIt)
{
if (!ftpclient.exists(filelist[i]) || (ftpclient.exists(filelist[i]) && !onlyPuttingNewFiles))
{
if (log.isDebug()) log.logDebug(toString(), Messages.getString("JobFTPPUT.Log.PuttingFileToRemoteDirectory",filelist[i],realRemoteDirectory));
String localFilename = realLocalDirectory+Const.FILE_SEPARATOR+filelist[i];
ftpclient.put(localFilename, filelist[i]);
filesput++;
// Delete the file if this is needed!
if (remove)
{
children[i].delete();
if (log.isDetailed()) log.logDetailed(toString(), Messages.getString("JobFTPPUT.Log.DeletedFile",filelist[i]));
}
}
}
}
result.setResult( true );
if (log.isDetailed()) log.logDebug(toString(), Messages.getString("JobFTPPUT.Log.WeHavePut",""+filesput));
}
catch(Exception e)
{
result.setNrErrors(1);
log.logError(toString(), Messages.getString("JobFTPPUT.Log.ErrorPuttingFiles",e.getMessage()));
log.logError(toString(), Const.getStackTracker(e));
} finally
{